[レポート] サーバーレスアーキテクチャのデザインパターンとベストプラクティス! #reinvent #ARC305
おつかれさまです。サーバーレス開発部の新井です。
re:invent初参加ということで若干浮き足立っていますが、Serverless Architectural Patterns and Best Practicesに参加してきたので、初セッションレポート投稿していこうと思います。
セッションの主な内容は、Serverless Architectureを実現する上で
- AWSで利用可能なサービスの紹介
- AWSサービス群を使ったデザインパターンの紹介
でした。
セッション概要
As serverless architectures become more popular, customers need a framework of patterns to help them identify how to leverage AWS to deploy their workloads without managing servers or operating systems. This session describes reusable serverless patterns while considering costs. For each pattern, we provide operational and security best practices and discuss potential pitfalls and nuances. We also discuss the considerations for moving an existing server-based workload to a serverless architecture. This session can help you recognize candidates for serverless architectures in your own organizations and understand areas of potential savings and increased agility.
大事な部分は
This session describes reusable serverless patterns while considering costs.
再利用可能なパターンであり、コスト面も考慮しているという点です。
登壇者
- Maitreya Ranganath (Solutions Architect, Amazon Web Services)
- Drew Dennis (Solutions Architect, Amazon Web Services)
アジェンダ
- Serverless foundation
- Web Application
- Stream processing
- Data Lake
- Machine learning
セッションメモ
Serverless foundation
サーバーレスとは?
- サーバーやコンテナの管理をしない
- スケーラブル
- 高可用性
- アイドル時の課金がない (コスト最適化)
Lambda ベストプラクティス
- パッケージサイズを最小化する
- 全体の動作を制御する場合は、環境変数を利用する
- SQSトリガーで起動するVisibility Timeoutを超過しないよう注意
Lambdaのフレームワーク (AWS SAM)
- CloudFormation の拡張
- SAM CLI によるローカルテストが可能
- Canary Deploymentsの機能もある
Lambdaの開発におけるIDE (Cloud9)
Lambdaのデプロイ (code兄弟)
- ソースコードは aws commitで管理し
- ビルドは aws codebuild
- テストは thirpaty製のツールなど
- デプロイは aws codedeploy
- これらを連結するのが、aws codepipeline
Web Application
ここからデザインパターンの話がメインです。
API Endpointの3つのパターン
- Edge Optimezed (CloudFrontを前段において、低レイテンシーを実現)
- Regional (Route53を前段に置いて、リージョンごとにルーティング可能。Dynamo Global TableやCloudFrontも利用)
- Private(VPCエンドポイントからのアクセスとして利用。DirectConnectなど、境界内ネットワークからのアクセスが可能)
Cognitoを利用した、認証・認可のパターン
- Cognito User Poolを利用して、ユーザプールから払い出されたTokenでAPI Gatewayにアクセスするパターン
- Cognito Identity Poolを利用して、AWSの一時クレデンシャルを取得してAPI Gatewayにアクセスするパターン (facebook, google などをidpとして利用)
セキュリティ面での利用可能な機能
AppSyncでGraphQL使うパターン
- 必要なデータのみ取得できる
- HTTP, MQTT, WebSocketをサポート
- オフラインでの動作
Stream processing
Kinesisを利用したストリーミングデータ処理の紹介
Lambdaを利用したFan-outパターン
Kinesis Data Analyticsをリアルタイム分析のパターン
関連サービスの比較
Data Lake
S3をデータレイクとした関連サービスの紹介
検索とデータのカタログ作成
データレイクへのインスタントなクエリ
Lambdaで実装するバッチプロセスのパターン
Machine learning
Amazon Rekognitionを利用したイメージファイルの分析パターン
Amazon Rekognitionを利用したメディアファイルの分析パターン
Amazon Connectを利用したコールセンターの分析パターン
まとめ
事前予約でも30分前には長蛇の列が出来るほど、人気のセッションでした。トピックに沿った形で、サーバーレスアーキテクチャのデザインパターンが豊富に盛り込まれていたため、とても勉強になりました。
データ分析やMachine learning系のサービスに関して詳しくないため、後半は内容が薄くなってしまい申し訳ないですが、今後はここらへんもカバーして良いレポート書けるようにしていきたいです。